perm filename 5[CRE,BGB] blob
sn#021795 filedate 1973-01-25 generic text, type T, neo UTF8
00100 II. FILE FORMATS.
00200 A. Television Image Format.
00300 B. Region/Edge Image Format.
00400
00500 A. Television Image Format.
00600
00700 The standard Cart's Eye television image is
00800 216 rows of 288 columns of 4 bits per pixel.
00900
01000 B. Contour/Region/Edge Image Format.
01100
01200 The image format, CRE, is essentially a core dump
01300 of CRE's internal node/link data structure. There are eight kinds
01400 of nodes and the nodes are fixed sized at six words per node.
01500
01600 From the top, the first node of a file is always a "FILM" node.
01700 The head of a film node points to a ring of "IMAGE" nodes.
01800 The head of an image node points to a ring of "LEVEL" nodes.
01900 The head of a level node points to a ring of "POLYGON" nodes.
02000 The head of a polygon node points to a ring of "EDGE" nodes.
02100 And edge nodes do not have a head pointer. Which is equivalent to
02200 saying that a file contains a film, a film is composed of images, an
02300 image is composed of levels, a level is composed of polygons and a
02400 polygon is composed of edges.
02500
02600 Now the detailed explanation will proceed bottom-up, starting
02700 with the most numerous edge nodes.
02800
02900 File names are accepted in the usual DEC format of name, dot,
03000 extension, left square bracket, project, comma, programmer, right
03100 square bracket, carriage return line feed. Where the filename is from
03200 one to six characters; and the extension project and programmer are
03300 from one to three characters. Everything but the filename is
03400 optional.
00100 V. SAIL INTERFACING.
00200
00300 It should be possible to embed the CRE machine code under a
00400 SAIL core image; however I do not intend to do this work. For the
00500 present, the CRE interface to SAIL is only realized via a disk file
00600 transfer of the data structures. A CRE file may be read into an
00700 integer array in binary mode as illustrated below.
00800
00900 The first word of a CRE file is the first word of the film
01000 node which contains the size of the file in words. The film node has
01100 address 0; the next node has address 7; and so on in multiplies of
01200 seven. There are no empty nodes in a CRE file. The following SAIL
01300 program will read in a CRE file named X:
01400
01500 COMMENT EXAMPLE OF SAIL INPUT OF A CRE FILE;
01600 BEGIN "TEST"
01700 INTEGER SIZE;
01800 OPEN(1,"DSK",8,3,0,0,0,0);
01900 LOOKUP(1,"X.CRE",0);
02000 SIZE ← WORDIN(1);
02100 BEGIN
02200 INTEGER ARRAY NODE[0:SIZE];
02300 ARRYIN(1,NODE[1],SIZE-1);
02400 RELEASE(1);
02500 "MAIN PROGRAM.";
02600 END;
02700 END;
02800
02900 After the NODE array is loaded, CRE links and data may be accessed by
03000 their document names in a reasonible node-link notation using macros
03100 like the following:
03200
03300 DEFINE CW(Q) = "(NODE[Q] LSH -18)";
03400 DEFINE CCW(Q) = "(NODE[Q] LAND '777777)";
03500 DEFINE DAD(Q) = "(NODE[Q+1] LSH -18)";
03600 DEFINE SON(Q) = "(NODE[Q+1] LAND '777777)";
03700
03800 So that the first vertex of the first polygon of the first level of
03900 the first image of the film can be obtained:
04000
04100 INTEGER FILM,IMAGE,LEVEL,POLYGON,VERTEX;
04200
04300 FILM ← NODE[0];
04400 LEVEL ← SON(FILM);
04500 POLYGON ← SON(LEVEL);
04600 VERTEX ← SON(POLYGON);
04700
04800 The user may note that SAIL will compile three or more instructuions
04900 for what is known as a PDP-10 halfword operation; also if the user
05000 converts the CRE nodes and links into LEAP items and associations
05100 then an overhead of from ten to one hundred instructions per
05200 "halfword operation" will be incurred.
00100 VI. EDITORIAL REMARKS.
00200
00300
00400 1.
00500 The version of CRE discussed in this document is known to
00600 me as the third, or the version of Christmas-72. CAREYE-I of '68 and
00700 '69 was embedded in LISP and contained thresholding, bit raster
00800 operations, and a polygon trace routine. CAREYE-II was embedded in
00900 SAIL, and in early forms even used LEAP. Both CAREYE-I and CAREYE-II
01000 were built around the notion of "windowing". CAREYE-IV, of
01100 Thanksgiving-72 was was scan line oriented.
01200
01300
01400 3.
01500 It is my impression that all the so called "scientific" ideas
01600 in CRE have appeared elsewhere. In particular, I was aware of and
01700 kind of liked the work of Krakauer, Zahn, and Mc Cormick's
01800 ILLAIC-III. Also, I was aware of and disliked the work of Pingle and
01900 Hueckel. I wish to acknowledge all these people from whom I have
02000 borrowed ideas, both positive and negative. On the other hand, I
02100 alone wrote and developed all the code in CRE.
02200
02800
02900 6. ANTI VARIABLE WINDOWING.
03000
03100 The requirement that a vision program must handle variable
03200 sized windows is a very severe limitation which I believe has bogged
03300 down many potentially good image processing ideas in a morass of word
03400 packing, array binding, window splicing, and cost optimization; all
03500 of which matters are not directly relevant to image processing.
03600
03700 7. ANTI VISUAL FEEDBACK ON THE TACTICAL LEVEL.
03800
03900 It has become a banal truism in computer vision reseach that
04000 a vision system must have feedback, accomodation, prediction,
04100 verification, and higher level knowledge. The pursuit of this visual
04200 feedback format seems to lead one to work solely on building a forest
04300 without worrying about how to build a tree.
04400
04500 8. ANTI HIGHER LEVEL LANGUAGES & PRO MACHINE CODE.
04600
04700 Another banal truism in AI is that a higher level language
04800 allows rapid implementation and experimental change of poorly
04900 understood algorithms.
00100 CODE DOCUMENTATION.
00200
00300 The CRE code uses additional PDP-10 mnemonics for the sake of
00400 pronouciation and brevity. The mnemonics stem from ancient PDP-1
00500 nomenclature; in the PDP-10 the left half word is the instruction
00600 part and the right half word is the address part. The codes CAR and
00700 CDR are traditional LISP names, derived from IBM-709 nomenclature;
00800 CAR and CDR are appropriate PDP-6/10 op codes because according to
00900 Kotok,the machine was designed to facilitate LISP.
01000
01100 HLR LIP Load Instruction Part.
01200 HRR LAP Load Address Part.
01300 HRLM DIP Deposit in Instruction Part.
01400 HRRM DAP Deposit in Instruction Part.
01500
01600 HRRZS ZIP Zero Instruction Part.
01700 HLLZS ZAP Zero Address Part.
01800 HRROS WIP W'ones to Instruction Part.
01900 HLLOS WAP W'ones to Address Part.
02000
02100 HLRZ CAR Contents Address Register.
02200 HRLI LIPI Load Instruction Part Immediate.
02300 HRRI LAPI Load Address Part Immediate.
02400 HRLZM DIPZ Deposit into Instruction Part with Zeroes.
02500
02600 HRRZ CDR Contents Decrement Register.
02700 MOVEI LACI Load Accumulator Immediate.
02800 MOVSI SLACI Swap Load Accumulator Immediate.
02900 HRRZM DAPZ Deposit into Address Part with Zeroes.
03000
03100 MOVE LAC Load Accumulator.
03200 MOVN LACN Load Accumulator Negative.
03300 MOVM LACM Load Accumulator Magnitude.
03400 MOVS SLAC Swap Load Accumulator.
03500
03600 MOVEM DAC Deposit Accumulator into memory.
03700 MOVNM DACN Deposit Accumulator Negative.
03800 MOVMM DACM Deposit Accumulator Magnitude.
03900 MOVSM SDAC Swap Deposit Accumulator.
04000
04100 HLRE NIP Number from Instruction Part.
04200 HRRE NAP Number from Address Part.
04300 HRREI NIM Number Immediate.
04400 JRST GO Load program counter immediate.
00100 REFERENCES.
00200
00300 KNUTH
00400 KRAKAUER
00500 GEOMED SAILON
00600 WINGED EDGE PAPER